decomposing functions